home *** CD-ROM | disk | FTP | other *** search
/ Software USA 3 #11 / Software USA Volume 3.11.iso / mac / Games / World Builder / Ray's World Builder Demo / "Dark Room" Code < prev    next >
Text File  |  1995-11-27  |  11KB  |  218 lines

  1. By Ray R. Dunakin III
  2.  
  3. Here is the complete scene code for the scene titled “Dark Room.” Following the scene code is a breakdown of the code, with explanations of each section of code.
  4.  
  5. *************************************************
  6.  
  7. IF{LOOP#=0}OR{TEXT$=LOOK}THEN
  8.     IF{LAMP>PLAYER@}OR{L1#<1}THEN
  9.         MOVE{DARK.1}TO{SCENE@}
  10.         PRINT{You are in a vary large, dark room. The only thing you can see is a bit of light streaming in from a passageway to the north.}
  11.         PRINT{....................................}
  12.         PRINT{You are facing NORTH.}
  13.     EXIT
  14.     MOVE{DARK.1}TO{STORAGE@}
  15.     PRINT{You are in a very long, large room. There are passageways to the NORTH and to the SOUTH.}
  16.     PRINT{....................................}
  17.     PRINT{You are facing NORTH.}
  18. END
  19. IF{TEXT$=SEARCH}THEN
  20.     PRINT{..................................}
  21.     IF{DARK.1=SCENE@}THEN
  22.         PRINT{It's to dark to find anything.}
  23.     EXIT
  24.     PRINT{There is a pile of trash in the corner.}
  25. EXIT
  26. IF{TEXT$=OPEN}THEN
  27.     PRINT{....................................}
  28.     IF{TEXT$=SAFE}OR{TEXT$=LOCK}THEN
  29.         IF{SAFE.CLOSED=SCENE@}THEN
  30.             PRINT{The safe is locked. You must enter the correct combination to open it.}
  31.         EXIT
  32.         PRINT{The safe is already open.}
  33.     EXIT
  34.     PRINT{What do you want to open?}
  35. EXIT
  36. IF{TEXT$=9-8-95}OR{TEXT$=9/8/95}OR{TEXT$=9895}OR{TEXT$=9 8 95}THEN
  37.     PRINT{....................................}
  38.     IF{SAFE.CLOSED=SCENE@}THEN
  39.         SOUND{JAR-SND.1}
  40.         SOUND{SQUEEK.1}
  41.         MOVE{SAFE.CLOSED}TO{STORAGE@}
  42.         MOVE{SAFE.OPEN}TO{SCENE@}
  43.         IF{KEY=STORAGE@}THEN
  44.             MOVE{KEY}TO{SCENE@}
  45.             PRINT{Inside the safe you find a key.}
  46.         EXIT
  47.         PRINT{The safe is empty.}
  48.     EXIT
  49.     PRINT{The safe is already open.}
  50. EXIT
  51. IF{TEXT$=1}OR{TEXT$=2}OR{TEXT$=3}OR{TEXT$=4}OR{TEXT$=5}OR{TEXT$=6}OR{TEXT$=7}OR{TEXT$=8}OR{TEXT$=9}OR{TEXT$=0}THEN
  52.     PRINT{....................................}
  53.     PRINT{That's not the correct combination to open the safe.}
  54. EXIT
  55. IF{CLICK$=SAFE.CLOSED}OR{CLICK$=CALENDAR.1}THEN
  56.     PRINT{....................................}
  57. END
  58. IF{CLICK$=SAFE.OPEN}THEN
  59.     SOUND{SQUEEK.1}
  60.     MOVE{SAFE.OPEN}TO{STORAGE@}
  61.     MOVE{SAFE.CLOSED}TO{SCENE@}
  62. EXIT
  63. IF{TEXT$=GET}OR{TEXT$=TAKE}OR{TEXT$=MOVE}THEN
  64.     PRINT{....................................}
  65.     IF{TEXT$=CALENDAR}OR{TEXT$=CALENDER}THEN
  66.         PRINT{The calendar is glued to the wall. You can't remove it.}
  67.     EXIT
  68. END
  69. IF{TEXT$=READ}THEN
  70.     IF{TEXT$=CALENDAR}OR{TEXT$=CALENDER}THEN
  71.         MOVE{CALENDAR.2}TO{SCENE@}
  72.     EXIT
  73. END
  74. IF{CLICK$=CALENDAR.2}THEN
  75.     MOVE{CALENDAR.2}TO{STORAGE@}
  76. EXIT
  77. IF{CLICK$=CLIPPING.1}THEN
  78.     PRINT{....................................}
  79.     MOVE{CLIPPING.1}TO{STORAGE@}
  80.     MOVE{CLIPPING}TO{PLAYER@}
  81.     PRINT{You found a newspaper clipping on the floor. The clipping is a want ad. To read it, enter "READ CLIPPING."}
  82. EXIT
  83.  
  84. **************End of code*********************
  85.  
  86. In this scene, the room is dark unless the player has a lamp, and the lamp is lit. Also, there is a wall safe in the room that requires a combination to open it. On the other wall, there is a calendar the player can read. And there is a newspaper clipping lying on the floor which the player can pick up and read at any time.
  87.  
  88. The first section of code handles the text description of the scene, and tells the program whether the scene should be dark or lighted:
  89.  
  90. IF{LOOP#=0}OR{TEXT$=LOOK}THEN
  91.     IF{LAMP>PLAYER@}OR{L1#<1}THEN
  92.         MOVE{DARK.1}TO{SCENE@}
  93.         PRINT{You are in a vary large, dark room. The only thing you can see is a bit of light streaming in from a passageway to the north.}
  94.         PRINT{....................................}
  95.         PRINT{You are facing NORTH.}
  96.     EXIT
  97.     MOVE{DARK.1}TO{STORAGE@}
  98.     PRINT{You are in a very long, large room. There are passageways to the NORTH and to the SOUTH.}
  99.     PRINT{....................................}
  100.     PRINT{You are facing NORTH.}
  101. END
  102.  
  103. >>>In the section above, the first IF/THEN statement determines if the loop # is zero, meaning the player has just come into the scene, or if the player has entered the word “look.” If either of these conditions is true, then the nested statement checks to see if the player does NOT have the lamp, or if the lamp is not lit. The variable L1# is used to tell if the lamp is lit or not. If it is less than 1, then the player has not lit the lamp. If the player does not have the lamp, OR the lamp is not lit, then an object with a darkened drawing of the room is moved to the scene, and a special scene description is printed in the text window, telling the player that the room is dark.
  104.  
  105. If the player DOES have the lamp, AND the lamp is lit, then the “dark” object is moved to storage (whether or not it is actually in the scene) and the player is given a proper description of the room.<<<
  106.  
  107.  
  108. Of course, if the player should try to search while the room is dark, he won’t have much success. So the following code segment checks to see if the “dark” object is in the scene each time the player enters the search command:
  109.  
  110. IF{TEXT$=SEARCH}THEN
  111.     PRINT{..................................}
  112.     IF{DARK.1=SCENE@}THEN
  113.         PRINT{It's too dark to find anything.}
  114.     EXIT
  115. END
  116.  
  117. >>>If indeed the “dark” object is in the scene, then a brief bit of text tells the player that it is too dark to find anything. This statement closes with EXIT, since we don’t want the program to tell the player anything else. If the dark object is not in the scene, then the nested statement is ignored. There is nothing special we want to tell the player when he or she searches, so the “search” statement closes with END, allowing the program to continue to the Global code, where the default tells the player “You find nothing unusual.”<<<
  118.  
  119. The next section of code handles the player’s attempt to open the safe. If the safe is closed, the player is told that it is locked and that he must enter a combination to open the safe. If the safe is already open, the the text informs the player of this:
  120.  
  121. IF{TEXT$=OPEN}THEN
  122.     PRINT{....................................}
  123.     IF{TEXT$=SAFE}OR{TEXT$=LOCK}THEN
  124.         IF{SAFE.CLOSED=SCENE@}THEN
  125.             PRINT{The safe is locked. You must enter the correct combination to open it.}
  126.         EXIT
  127.         PRINT{The safe is already open.}
  128.     EXIT
  129.     PRINT{What do you want to open?}
  130. EXIT
  131.  
  132. >>>This requires three nested statements. The first one detects if the player has entered “open.” The second statement determines if the player has also entered the words “safe” or “lock.” The innermost statement checks to see if the safe is actually closed.<<<
  133.  
  134.  
  135. The next section of code handles the actual combination:
  136.  
  137. IF{TEXT$=9-8-95}OR{TEXT$=9/8/95}OR{TEXT$=9895}OR{TEXT$=9 8 95}THEN
  138.     PRINT{....................................}
  139.     IF{SAFE.CLOSED=SCENE@}THEN
  140.         SOUND{JAR-SND}
  141.         SOUND{SQUEEK.1}
  142.         MOVE{SAFE.CLOSED}TO{STORAGE@}
  143.         MOVE{SAFE.OPEN}TO{SCENE@}
  144.         IF{KEY=STORAGE@}THEN
  145.             MOVE{KEY}TO{SCENE@}
  146.             PRINT{Inside the safe you find a key.}
  147.         EXIT
  148.         PRINT{The safe is empty.}
  149.     EXIT
  150.     PRINT{The safe is already open.}
  151. EXIT
  152.  
  153. >>>In the above code, the first statement checks to see if the player has entered the correct combination, in any of four possible variations. If so, then the nested statement detects if the safe is closed. If the combination has been entered, and the safe is closed, then a “twisting” sound is played (to represent the sound of the dial), followed by the sound of the metal hinges as the safe is opened. The SAFE.CLOSED object is moved to storage, and the SAFE.OPEN object is moved to the scene. Then a final statement checks to see if the “key” object is in storage. If it is, then it is moved to the scene, and the player is told that the key was in the safe. If the key is not in storage, then that statement is skipped and the player is told that the safe is empty. This is so that the key won’t keep turning up in the safe over and over if the player closes the safe and reopens it.
  154.  
  155. Finally, if the safe is already open, then the text is printed that informs the player of this.<<<
  156.  
  157. The following section handles any incorrect combinations the player may try to enter. If the player enters any number other than the correct combination, it will pass the previous code, and must be wrong. So any number from 0 to 9, regardless of the sequence, will result in the statement below being true, and the player is told that the number is wrong:
  158.  
  159. IF{TEXT$=1}OR{TEXT$=2}OR{TEXT$=3}OR{TEXT$=4}OR{TEXT$=5}OR{TEXT$=6}OR{TEXT$=7}OR{TEXT$=8}OR{TEXT$=9}OR{TEXT$=0}THEN
  160.     PRINT{....................................}
  161.     PRINT{That's not the correct combination to open the safe.}
  162. EXIT
  163.  
  164.  
  165. If the player clicks on the immobile objects in the scene, the following section of code prints a seperator line of periods before the objects’ description is printed:
  166.  
  167. IF{CLICK$=SAFE.CLOSED}OR{CLICK$=CALENDAR.1}THEN
  168.     PRINT{....................................}
  169. END
  170.  
  171.  
  172. The code below closes the safe if the player clicks on the SAFE.OPEN object. No text is required for this action. The sound of the hinges is played, the SAFE.OPEN object is returned to storage, and the SAFE.CLOSED object is moved to the scene:
  173.  
  174. IF{CLICK$=SAFE.OPEN}THEN
  175.     SOUND{SQUEEK.1}
  176.     MOVE{SAFE.OPEN}TO{STORAGE@}
  177.     MOVE{SAFE.CLOSED}TO{SCENE@}
  178. EXIT
  179.  
  180.  
  181. The code below handles the player’s attempts to take the calendar on the wall:
  182.  
  183. IF{TEXT$=GET}OR{TEXT$=TAKE}OR{TEXT$=MOVE}THEN
  184.     PRINT{....................................}
  185.     IF{TEXT$=CALENDAR}OR{TEXT$=CALENDER}THEN
  186.         PRINT{The calendar is glued to the wall. You can't remove it.}
  187.     EXIT
  188. END
  189.  
  190. >>>The first statement above detects if the player has entered the words “get” “take” or “move.” If so then a row of periods is printed, and a nested statement determines if the player has also entered the word “calendar” (or its common misspelling, “calender.” I try to include common misspellings wherever possible to make the game more user-friendly.) If the second statement is true, then the player is told that the calendar is glued to the wall and can’t be moved.<<<
  191.  
  192.  
  193. The next section tells the program what to do if the player tries to read the calendar:
  194.  
  195. IF{TEXT$=READ}THEN
  196.     IF{TEXT$=CALENDAR}OR{TEXT$=CALENDER}THEN
  197.         MOVE{CALENDAR.2}TO{SCENE@}
  198.     EXIT
  199. END
  200.  
  201. >>>The first statement determines if the word “read” has been entered. If so, then the second statement checks to see if “calendar” has been entered. If that is also true, then the object that is a closeup drawing of the calendar is moved to the scene, so that the player may examine it and see the dates.<<<
  202.  
  203. Below, if the player clicks on the closeup calendar object (CALENDAR.2) then it is returned to storage:
  204.  
  205. IF{CLICK$=CALENDAR.2}THEN
  206.     MOVE{CALENDAR.2}TO{STORAGE@}
  207. EXIT
  208.  
  209.  
  210. Next, if the player clicks on a small drawing of the clipping on the floor (CLIPPING.1) then the actual movable object “clipping” is moved to the player’s possession, and CLIPPING.1 is moved to storage. Text is then printed in the text window telling the player what he has found, and how to read it:
  211.  
  212. IF{CLICK$=CLIPPING.1}THEN
  213.     PRINT{....................................}
  214.     MOVE{CLIPPING.1}TO{STORAGE@}
  215.     MOVE{CLIPPING}TO{PLAYER@}
  216.     PRINT{You found a newspaper clipping on the floor. The clipping is a want ad. To read it, enter "READ CLIPPING."}
  217. EXIT
  218.